home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Games: 500 MB Amiga Software
/
500 MB Amiga Software - Euber 130 - Amiga Games Disc & Mag.iso
/
userbox
/
publicdomain
/
mcalc
/
source
/
mcalc.h
< prev
next >
Wrap
Text File
|
1995-01-22
|
16KB
|
403 lines
/*
Auto: smake MCalc
*/
/* $Revision Header built automatically *************** (do not edit) ************
**
** © Copyright by GuntherSoft
**
** File : SnakeSYS:CPrgs/MUICalc/MCalc.h
** Created on : Saturday, 02.10.93 02:16:34
** Created by : Kai Iske
** Current revision : V1.5
**
**
** Purpose
** -------
** - Header-File for MCalc
**
** Revision V1.5
** --------------
** created on Donnerstag, 25.08.94 03:09:39 by Kai Iske. LogMessage :
** -*- changed on Saturday, 21.01.95 17:43:49 by --- Unknown ---. LogMessage :
** - Added new function to menu/ARexx. DELETEHISTORY will delete
** an entry from the history list.
** (Requested by : Sorry, I lost you name, but thanks for the
** suggestions and the translation of the manual)
** -*- changed on Samstag, 21.01.95 17:15:17 by Kai Iske. LogMessage :
** - Added support for GRADS
** (Requested by : Sorry, I lost you name, but thanks for the
** suggestions and the translation of the manual)
** -*- changed on Samstag, 21.01.95 16:07:13 by Kai Iske. LogMessage :
** - Introduced exg operator, which exchanges the contents
** of two memories
** (Requested by : Sorry, I lost you name, but thanks for the
** suggestions and the translation of the manual)
** -*- changed on Samstag, 21.01.95 01:06:35 by Kai Iske. LogMessage :
** - Added great support for physical constants. 31 listed
** (Requested by : Sorry, I lost you name, but thanks for the
** suggestions and the translation of the manual)
** -*- changed on Freitag, 20.01.95 18:37:04 by Kai Iske. LogMessage :
** - Added full features linear regression support
** (Requested by : Volker Güth)
** -*- changed on Freitag, 20.01.95 12:58:05 by Kai Iske. LogMessage :
** - Added standard deviation support
** (Requested by : Volker Güth)
** -*- changed on Freitag, 20.01.95 12:26:16 by Kai Iske. LogMessage :
** - Added (n k) n-over-k function, 1/x, and the y-th root of x
** function.
** (Requested by : Sorry, I lost you name, but thanks for the
** suggestions and the translation of the manual)
** -*- changed on Donnerstag, 19.01.95 17:51:12 by Kai Iske. LogMessage :
** - Increased number of internal memories from 3 to 18 (I-Z)
** -*- changed on Donnerstag, 19.01.95 17:25:41 by Kai Iske. LogMessage :
** - Changed function group to use Registers/Cycle Gadget,
** according to your MUI settings.
** - MCalc requested any muimaster.library, even though version
** 7 (MUI 2.x) was required
** -*- changed on Mittwoch, 18.01.95 19:58:42 by Kai Iske. LogMessage :
** - Some of the input gadgets didn`t react on key nor mouse
** activations.
** (Reported by : Andreas Kirchwitz, and several others)
** -*- changed on Freitag, 26.08.94 14:22:31 by Kai Iske. LogMessage :
** - Recompiled scanner using Flex 2.4.7
** -*- created on Donnerstag, 25.08.94 03:09:39 by Kai Iske. LogMessage :
** - The format identifier for binary values has been changed;
** I forgot to change the output format identifier as well.
**
** Revision V1.4
** --------------
** created on Thursday, 17.03.94 20:09:05 by Kai Iske. LogMessage :
** -*- changed on Donnerstag, 18.08.94 17:35:24 by Kai Iske. LogMessage :
** - MCalc didn`t even care about Percent calculations
** -*- changed on Sonntag, 07.08.94 20:30:27 by Kai Iske. LogMessage :
** - atan() wasn`t definied for some ranges (somehow)
** -*- changed on Sonntag, 07.08.94 20:17:13 by Kai Iske. LogMessage :
** - The InputString will be default object now
** -*- created on Thursday, 17.03.94 20:09:05 by Kai Iske. LogMessage :
** - Recompiled with Scanner generated by flex 2.4.6
**
** Revision V1.3
** --------------
** created on Friday, 11.02.94 23:34:08 by Kai Iske. LogMessage :
** -*- changed on Friday, 11.02.94 23:35:32 by Kai Iske. LogMessage :
** - One couldn`t use 1e3 for scientific notation of 1000. You
** had to write 1.0e3. Changed
** (Reported by : Henry Norman)
** - No more error lines will be copied from History
** (Requested by : Stefan Stuntz)
** -*- created on Friday, 11.02.94 23:34:08 by Kai Iske. LogMessage :
** - "Radiant" was wrong. Changed. Why didn`t anybody tell me.
** (Reported by : Henry Norman)
** - Chose wrong case for mathematical "e".
** (Reported by : Henry Norman)
**
** Revision V1.2
** --------------
** created on Tuesday, 19.10.93 23:41:00 by Kai Iske. LogMessage :
** -*- changed on Wednesday, 08.12.93 23:48:31 by Kai Iske. LogMessage :
** - Default number of history lines increased
** (Requested by : Stefan Stuntz)
** -*- changed on Sunday, 05.12.93 22:30:41 by Kai Iske. LogMessage :
** - No checks were made on the ENTRY argument to an ARexx
** function
** -*- changed on Sunday, 05.12.93 18:13:56 by Kai Iske. LogMessage :
** - For calculations via ARexx one can set the type, size, sign
** and angle flags seperately, now
** -*- changed on Sunday, 05.12.93 17:50:09 by Kai Iske. LogMessage :
** - Improved error handling from within ARexx commands a bit
** -*- changed on Sunday, 05.12.93 17:46:35 by Kai Iske. LogMessage :
** - MUIProCalc may output TeX style mathematical expressions
** when using the ARexx commands. Additionally there is another
** option to convert expressions to TeX format.
** (Requested by : Volker Güth)
** -*- changed on Sunday, 05.12.93 16:47:59 by Kai Iske. LogMessage :
** - Added more ARexx functions to the default ones
** (CALC, GETINPUT, GETOUTPUT)
** (Requested by : Volker Güth)
** -*- changed on Sunday, 05.12.93 01:47:36 by Kai Iske. LogMessage :
** - MUIProCalc didn`t handle extremly small values
** (Reported by : Volker Güth)
** -*- changed on Sunday, 05.12.93 01:38:18 by Kai Iske. LogMessage :
** - Default values weren`t set up
** - ACLR and CLR gadget have got menu entries too, now
** (Requested by : Volker Güth)
** - History entries may be copied to clipboard now
** (Requested by : Volker Güth)
** -*- changed on Saturday, 27.11.93 01:01:25 by Kai Iske. LogMessage :
** - Recompiled using SAS 6.50
** -*- changed on Wednesday, 20.10.93 00:24:41 by Kai Iske. LogMessage :
** - Bug in ListView display fixed
** -*- created on Tuesday, 19.10.93 23:41:00 by Kai Iske. LogMessage :
** - You may now tell MCalc to clear the input string after
** hitting RETURN or EXEC.
**
** Revision V1.1
** --------------
** created on Tuesday, 12.10.93 01:50:26 by Kai Iske. LogMessage :
** -*- changed on Sunday, 17.10.93 15:03:10 by Kai Iske. LogMessage :
** - Save and Use gadgets weren`t arranged as proposed
** by the AUISG. (Reported by: Stefan Stuntz)
** - Changed layout of Prefs window a bit
** (Suggested by: Stefan Stuntz)
** -*- changed on Friday, 15.10.93 18:39:50 by Kai Iske. LogMessage :
** - NOT operator didn`t behave as expected ;) It was a simple
** negate... (Reported by : Top on IRC)
** -*- changed on Thursday, 14.10.93 18:01:32 by Kai Iske. LogMessage :
** - Hex-Values may be entered using 'C'-Style now (e.g. 0xff)
** -*- changed on Thursday, 14.10.93 00:34:55 by Kai Iske. LogMessage :
** - One can use the faktorian '!' behind numbers now, too.
** (Suggested by : Top on IRC)
** -*- changed on Thursday, 14.10.93 00:28:52 by Kai Iske. LogMessage :
** - One could accidentially change the ordering of the
** functions and input-gadgets groups by using
** 'No Functions' and 'No Input' (reported by: Top on IRC)
** -*- created on Tuesday, 12.10.93 01:50:26 by Kai Iske. LogMessage :
** - Order of Input and Ouput gadgets (String + ListView) may be
** set now, ie. the input string may show up underneith the
** ListView and vice versa (Requested by Dirk Federlein)
**
** Revision V1.0
** --------------
** created on Saturday, 02.10.93 02:16:34 by Kai Iske. LogMessage :
** --- Initial release ---
**
*********************************************************************************/
#define REVISION "1.5"
#define REVDATE "21.01.95"
#define REVTIME "17:43:49"
#define AUTHOR "--- Unknown ---"
#define VERNUM 1
#define REVNUM 5
#ifndef MCALC_H
#define MCALC_H
/**********************************************************************/
/* Parser-Prototypes */
/**********************************************************************/
int yyparse(void);
int yyerror(char *s);
ULONG make_ulong(double OldVal);
double calc_fak(double Fak);
double calc_angle(double Value);
BOOL check_angle(double Value, int Mode);
BOOL add_standard_value(double Value);
BOOL add_linear_value(double ValueX, double ValueY);
int numbers_in_list(struct List *Lst);
double calc_average(struct List *Lst, BOOL LinearValueY);
double calc_population(struct List *Lst, BOOL LinearValueY);
double calc_sample(struct List *Lst, BOOL LinearValueY);
double calc_powsum(struct List *Lst, BOOL LinearValueY);
double calc_sum(struct List *Lst, BOOL LinearValueY);
double calc_xysum(void);
double calc_lralpha(void);
double calc_lrbeta(void);
double calc_lrassessx(double y);
double calc_lrassessy(double x);
double calc_lrcorr(void);
double calc_lrcovar(void);
/**********************************************************************/
/* Scanner-Prototypes */
/**********************************************************************/
int yylex(void);
void yyrestart(FILE *File);
void count(void);
int calc_int_value(char *s);
int calc_hex_value(char *s, int leng);
int calc_bin_value(char *s);
int calc_oct_value(char *s);
int calc_dbl_value(char *s);
/**********************************************************************/
/* Error-Codes for Scanner/Parser */
/**********************************************************************/
#define ERR_PARSE 1
#define ERR_UNKNOWN_CHR 2
#define ERR_DIVBY0 3
#define ERR_OVERFLOW 4
#define ERR_NOMEM 5
#define ERR_UNDERFLOW 6
/**********************************************************************/
/* My constant definitions */
/**********************************************************************/
#define Pi ((double) 3.141592653589793)
/**********************************************************************/
/* Assembler-Prototypes */
/**********************************************************************/
ULONG __asm MyASL(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyASR(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyLSL(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyLSR(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyROL(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyROR(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyXOR(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyNAND(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyNOR(register __d0 ULONG In, register __d1 ULONG Out);
ULONG __asm MyNXOR(register __d0 ULONG In, register __d1 ULONG Out);
APTR __asm DoCreatePool(register __d0 ULONG, register __d1 ULONG, register __d2 ULONG);
void __asm DoDeletePool(register __a0 APTR);
APTR __asm AllocVecPool(register __a0 APTR, register __d0 ULONG);
void __asm FreeVecPool(register __a0 APTR, register __a1 APTR);
/**********************************************************************/
/* Structure for ListView display */
/**********************************************************************/
struct ListStruct
{
char Input[258];
char Output[258];
};
/**********************************************************************/
/* Node to use for Standard/Linear Regression calculation */
/**********************************************************************/
struct DoubleNode
{
struct Node Link;
double ValueX;
double ValueY;
};
/**********************************************************************/
/* Node for displaying constants */
/**********************************************************************/
struct ConstNode
{
char *Constant;
char *Value;
char *Notation;
};
/**********************************************************************/
/* Some nice defines */
/**********************************************************************/
// This is our Version string
#define MUIVERS "$VER:MCalc "REVISION" ("REVDATE")"
// These are for Button/Menu IDs
enum{
DUMMY,
ID_QUIT, // Quit program
ID_ABOUT, // Display About
ID_PREFS, // Open Prefs
ID_PICKLEFT, // Pick left entry from History
ID_PICKRIGHT, // Pick right entry from History
ID_CLIPCUTLEFT, // Clip left entry to clipboard
ID_CLIPCUTRIGHT, // Clip right entry to clipboard
ID_DELHISTORY, // Delete active entry from History
ID_DECIMAL, // Switch to dec display
ID_HEXDECIMAL, // Switch to hex display
ID_OCTAL, // Switch to oct display
ID_BINARY, // Switch to bin display
ID_8BIT, // Set 8-Bit Base
ID_16BIT, // Set 16-Bit Base
ID_32BIT, // Set 32-Bit Base
ID_SIGNED, // Switch to signed dec ouput
ID_UNSIGNED, // Switch to unsigned dec output
ID_RAD, // Radiant angles
ID_DEG, // Degree angles
ID_GRAD, // Grads angles
ID_STDHISTORY, // Open std.deviation history
ID_CLOSESTD, // Close std.deviation history
ID_LINHISTORY, // Open lin.regression history
ID_CLOSELIN, // Close lin.regression history
ID_CONSTANTS, // Open constants window
ID_CLOSECONST, // Close constants window
ID_SELECTCONST, // Select constant
ID_INPUT, // Received input from String gadget
ID_LISTVIEW, // Double clicked on ListView
ID_EXEC, // Translate input
ID_CLEAR, // Clear input gadget
ID_ALLCLEAR, // Clear input gadget AND memory
ID_PREFS_QUIT, // Close Prefs window
ID_PREFS_NEW // New Prefs set
};
/**********************************************************************/
/* Definitions for Online-Help */
/**********************************************************************/
#define HELPFILE "MCalc.guide"
#define NODE_MAIN "Main"
#define NODE_INOUTPUT "InputOutput"
#define NODE_FUNCTIONS "FuncTables"
#define NODE_STDDEVIATION "StdDeviation"
#define NODE_LINREGRESSION "LinRegression"
#define NODE_INPUTS "Inputs"
#define NODE_PREFS "Prefs"
#define NODE_LAYOUT "Layout"
#define NODE_OUTPUT "Output"
#define NODE_HISTORY "History"
#define NODE_MISC "Misc"
#define NODE_WINDOWS "Windows"
/**********************************************************************/
/* Defines for Clipboard support */
/**********************************************************************/
#define ID_FTXT MAKE_ID('F','T','X','T')
#define ID_CHRS MAKE_ID('C','H','R','S')
/**********************************************************************/
/* Some defines for ARexx */
/**********************************************************************/
#define GET_OUTPUT 1
#define GET_INPUT 2
#define NORMAL_OUTPUT 1
#define TEX_OUTPUT 2
#define GET_ACTIVE -1
#define GET_TOPMOST -2
#define GET_BOTTOMMOST -3
#include "Protos.h"
#endif